home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / C / ARCADE.ZIP / MS.EXE / lzh / BULLET.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-15  |  4.2 KB  |  169 lines

  1. /*--------------------------------bullet.c----------------------------------*/
  2. /*
  3. Copyright 1992 David Conger
  4. */
  5.  
  6.  
  7.  
  8. /*------------------------------include files-------------------------------*/
  9.  
  10. #include "bullet.h"
  11. #include <graphics.h>
  12.  
  13. /*----------------------------end include files-----------------------------*/
  14.  
  15.  
  16.  
  17.  
  18.  
  19. /*------------------------------draw_bullet---------------------------------*/
  20.  
  21. void draw_bullet(bullet *bull)
  22. {
  23.     if (bull->bullet_exists)
  24.     {
  25.         switch (bull->current_direction)
  26.         {
  27.             case BULLET_UP:
  28.                 putpixel(get_point_col(bull->current_position),
  29.                          get_point_row(bull->current_position),
  30.                          bull->color);
  31.                 putpixel(get_point_col(bull->current_position)+1,
  32.                          get_point_row(bull->current_position)+1,
  33.                          bull->color);
  34.                 putpixel(get_point_col(bull->current_position),
  35.                          get_point_row(bull->current_position)+1,
  36.                          bull->color);
  37.                 putpixel(get_point_col(bull->current_position)-1,
  38.                          get_point_row(bull->current_position)+1,
  39.                          bull->color);
  40.                 putpixel(get_point_col(bull->current_position),
  41.                          get_point_row(bull->current_position)+2,
  42.                          bull->color);
  43.                 break;
  44.  
  45.             case BULLET_DOWN:
  46.                 putpixel(get_point_col(bull->current_position),
  47.                          get_point_row(bull->current_position),
  48.                          bull->color);
  49.                 putpixel(get_point_col(bull->current_position)-1,
  50.                          get_point_row(bull->current_position)-1,
  51.                          bull->color);
  52.                 putpixel(get_point_col(bull->current_position),
  53.                          get_point_row(bull->current_position)-1,
  54.                          bull->color);
  55.                 putpixel(get_point_col(bull->current_position)+1,
  56.                          get_point_row(bull->current_position)-1,
  57.                          bull->color);
  58.                 putpixel(get_point_col(bull->current_position),
  59.                          get_point_row(bull->current_position)-2,
  60.                          bull->color);
  61.         }
  62.     }
  63. }
  64.  
  65. /*----------------------------end draw_bullet-------------------------------*/
  66.  
  67.  
  68.  
  69.  
  70.  
  71. /*-------------------------------erase_bullet-------------------------------*/
  72.  
  73. void erase_bullet(bullet *bull)
  74. {
  75.     int save_color;
  76.  
  77.  
  78.     save_color=bull->color;
  79.     bull->color=BACKGROUND_COLOR;
  80.     draw_bullet(bull);
  81.     bull->color=save_color;
  82. }
  83.  
  84. /*-----------------------------end erase_bullet-----------------------------*/
  85.  
  86.  
  87.  
  88.  
  89.  
  90. /*--------------------------------move_bullet-------------------------------*/
  91.  
  92. void move_bullet(bullet *bull)
  93. {
  94.     erase_bullet(bull);
  95.  
  96.     switch (bull->current_direction)
  97.     {
  98.         case BULLET_UP:
  99.             set_point_row(bull->current_position,
  100.                           get_point_row(bull->current_position)-1);
  101.             break;
  102.  
  103.         case BULLET_DOWN:
  104.             set_point_row(bull->current_position,
  105.                           get_point_row(bull->current_position)+1);
  106.             break;
  107.  
  108.     }
  109.     draw_bullet(bull);
  110. }
  111.  
  112. /*-----------------------------end move_bullet------------------------------*/
  113.  
  114.  
  115.  
  116.  
  117.  
  118. /*----------------------------bullet_collision------------------------------*/
  119.  
  120. boolean bullet_collision(bullet *bull)
  121. {
  122.     boolean collision=FALSE;
  123.  
  124.  
  125.     if (bull->bullet_exists)
  126.     {
  127.         switch (bull->current_direction)
  128.         {
  129.             case BULLET_UP:
  130.                 if ((getpixel(get_point_col(bull->current_position),
  131.                               get_point_row(bull->current_position)-1) !=
  132.                               BACKGROUND_COLOR) ||
  133.                     (getpixel(get_point_col(bull->current_position)+1,
  134.                                  get_point_row(bull->current_position)) !=
  135.                               BACKGROUND_COLOR) ||
  136.                     (getpixel(get_point_col(bull->current_position)-1,
  137.                               get_point_row(bull->current_position)) !=
  138.                               BACKGROUND_COLOR))
  139.                 {
  140.                     collision=TRUE;
  141.                 }
  142.  
  143.                 break;
  144.  
  145.             case BULLET_DOWN:
  146.                 if ((getpixel(get_point_col(bull->current_position),
  147.                               get_point_row(bull->current_position)+1) !=
  148.                               BACKGROUND_COLOR) ||
  149.                     (getpixel(get_point_col(bull->current_position)-1,
  150.                               get_point_row(bull->current_position))!=
  151.                               BACKGROUND_COLOR) ||
  152.                     (getpixel(get_point_col(bull->current_position)+1,
  153.                               get_point_row(bull->current_position))!=
  154.                               BACKGROUND_COLOR))
  155.                 {
  156.                     collision=TRUE;
  157.                 }
  158.                 break;
  159.         }
  160.     }
  161.     return(collision);
  162. }
  163.  
  164. /*--------------------------end bullet_collision----------------------------*/
  165.  
  166.  
  167.  
  168. /*------------------------------end bullet.c--------------------------------*/
  169.